#include "driver.h"
#include "monitor.h"
#include "full_adder.h"

int sc_main(int argc, char* argv[]) {
    sc_signal<bool> t_a, t_b, t_cin, t_sum, t_cout;
    full_adder dut("dut");
    // connect using positional association, is deprecated in systemC
    // dut << t_a << t_b << t_cin << t_sum << t_cout;
    dut.a(t_a);
    dut.b(t_b);
    dut.carry_in(t_cin);
    dut.sum(t_sum);
    dut.carry_out(t_cout);

    driver drv("dri");
    drv.d_a(t_a);
    drv.d_b(t_b);
    drv.d_cin(t_cin);

    monitor mon("mon");
    mon.m_a(t_a);
    mon.m_b(t_b);
    mon.m_cin(t_cin);
    mon.m_sum(t_sum);
    mon.m_cout(t_cout);

    sc_start(100, SC_NS);

    return 0;
}